home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / Libraries / PNL Libraries / MyTrackIdle.p < prev    next >
Encoding:
Text File  |  1995-03-19  |  1.3 KB  |  70 lines  |  [TEXT/CWIE]

  1. unit MyTrackIdle;
  2.  
  3. interface
  4.  
  5.     uses
  6.         Types;
  7.         
  8.     function IdleSince: longInt;  {TickCount at last no idle time}
  9.     procedure InitTrackIdle;
  10.     procedure FinishTrackIdle;
  11.     procedure TrackIdle;
  12.  
  13. implementation
  14.  
  15.     uses
  16.         Events;
  17.         
  18.     type
  19.         keyLongMap = array[1..4] of longInt;
  20.  
  21.     var
  22.         lastmoved: longInt;  { Last time the cursor was moved, used for idle timing }
  23.         lastpos: point;
  24.         lastkeymap: keyLongMap;
  25.  
  26.     function IdleSince: longInt;  {TickCount at last no idle time}
  27.     begin
  28.         IdleSince := lastmoved;
  29.     end;
  30.  
  31.     procedure MyGetMouse (var pt: point); { Handles not having quickdraw around }
  32.         var
  33. event:eventRecord;
  34. dummy:boolean;
  35.     begin
  36. dummy:=OSEventAvail(0,event);
  37.         pt := event.where;
  38.     end;
  39.  
  40.     procedure TrackIdle;
  41.         var
  42.             pt: point;
  43.             km: keyLongMap;
  44.     begin
  45.         pt := lastpos;
  46.         MyGetMouse(lastpos);
  47.         if (abs(pt.h - lastpos.h) > 2) or (abs(pt.v - lastpos.v) > 2) then begin
  48.             lastmoved := TickCount;
  49.         end
  50.         else begin
  51.             GetKeys(keyMap(km));
  52.             if (km[1] <> lastkeymap[1]) or (km[2] <> lastkeymap[2]) or (km[3] <> lastkeymap[3]) or (km[4] <> lastkeymap[4]) then begin
  53.                 lastmoved := TickCount;
  54.                 lastkeymap := km;
  55.             end;
  56.         end;
  57.     end;
  58.  
  59.     procedure InitTrackIdle;
  60.     begin
  61.         MyGetMouse(lastpos);
  62.         lastmoved := TickCount;
  63.         GetKeys(keyMap(lastkeymap));
  64.     end;
  65.  
  66.     procedure FinishTrackIdle;
  67.     begin
  68.     end;
  69.  
  70. end.